Node.js এ ফাইল সিস্টেমের সাথে কাজ করার জন্য fs (File System) মডিউলটি ব্যবহৃত হয়। ফাইল অপারেশনগুলো সিনক্রোনাস (Synchronous) এবং অ্যাসিনক্রোনাস (Asynchronous) দুটি মোডে করা যেতে পারে। প্রতিটি পদ্ধতির নিজস্ব সুবিধা ও সীমাবদ্ধতা রয়েছে এবং কোনটি ব্যবহার করবেন তা নির্ভর করে আপনার অ্যাপ্লিকেশনের প্রয়োজনে।
১. Synchronous File Operations (সিনক্রোনাস ফাইল অপারেশন)
সিনক্রোনাস ফাইল অপারেশন হল সেই ধরনের অপারেশন যেখানে ফাইলের অপারেশন সম্পন্ন হওয়ার পর পরবর্তী কোড রান হয়। অর্থাৎ, একটি ফাইল অপারেশন শেষ না হওয়া পর্যন্ত অন্য কোন অপারেশন শুরু হয় না।
বৈশিষ্ট্য:
- ব্লকিং অপারেশন: এটি অন্য কোড চালানোর আগে ফাইল অপারেশন সম্পন্ন হওয়া পর্যন্ত অপেক্ষা করে।
- সরল ও সহজ: ছোট বা একক থ্রেডেড অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত, যেখানে একে একে অপারেশন করতে হয়।
উদাহরণ:
const fs = require('fs');
// সিনক্রোনাস ফাইল পড়া
let data = fs.readFileSync('example.txt', 'utf8');
console.log(data); // ফাইলের ডেটা প্রিন্ট করবে
// এই লাইনটি শুধুমাত্র উপরের ফাইল পড়ার অপারেশন শেষে চলবে
console.log('File reading completed!');Output:
Hello, this is a test file!
File reading completed!এখানে, fs.readFileSync() ফাইলটি সম্পূর্ণরূপে পড়ে না যতক্ষণ না পরবর্তী কোড চালানো হয় না। এই কারণে ফাইল পড়ার পরেই পরবর্তী লাইনটি চলে।
২. Asynchronous File Operations (অ্যাসিনক্রোনাস ফাইল অপারেশন)
অ্যাসিনক্রোনাস ফাইল অপারেশন হল সেই ধরনের অপারেশন যেখানে ফাইল অপারেশনটি চালানোর পর Node.js অন্য কাজগুলো চালাতে থাকে এবং যখন ফাইল অপারেশনটি সম্পন্ন হয়, তখন কলব্যাক ফাংশনটি ট্রিগার হয়।
বৈশিষ্ট্য:
- নন-ব্লকিং অপারেশন: এটি অন্য কাজের সাথে একই সময়ে চলতে থাকে। ফাইল অপারেশন শেষ হওয়ার পর কলব্যাক ফাংশন চালানো হয়।
- পারফরম্যান্স এবং স্কেলেবিলিটি: বড় বা অনেক অ্যাসিনক্রোনাস অপারেশন যেখানে একাধিক ফাইল অথবা ডেটা হ্যান্ডেল করতে হয়, সেক্ষেত্রে এটি উপযুক্ত।
উদাহরণ:
const fs = require('fs');
// অ্যাসিনক্রোনাস ফাইল পড়া
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) {
console.log('Error reading file:', err);
} else {
console.log(data); // ফাইলের ডেটা প্রিন্ট করবে
}
});
// এই লাইনটি ফাইল পড়া সম্পন্ন হওয়ার আগে চলে যাবে
console.log('File reading started...');Output:
File reading started...
Hello, this is a test file!এখানে, fs.readFile() ফাইল পড়ার কাজ শুরু করার পর পরবর্তী লাইনটি (যেমন console.log('File reading started...');) চলে যায়। ফাইল পড়া শেষ হলে কলব্যাক ফাংশন চালানো হয় এবং ফাইলের ডেটা প্রিন্ট করা হয়।
পার্থক্য: Synchronous vs Asynchronous
| বৈশিষ্ট্য | Synchronous (সিনক্রোনাস) | Asynchronous (অ্যাসিনক্রোনাস) |
|---|---|---|
| ব্লকিং বা নন-ব্লকিং | ব্লকিং (Blocking) | নন-ব্লকিং (Non-blocking) |
| পারফরম্যান্স | কম পারফরম্যান্স (কম স্কেলেবল) | ভালো পারফরম্যান্স (উচ্চ স্কেলেবল) |
| ব্যবহারযোগ্যতা | ছোট সিস্টেম বা একক থ্রেডেড অ্যাপ্লিকেশনে | বড়, স্কেলেবল বা কনকারেন্ট অ্যাপ্লিকেশনে |
| অপারেশন সম্পন্ন না হলে | পরবর্তী কোড রান হয় না | পরবর্তী কোড রান হয়, কলব্যাক ফাংশন পরে |
| কোডের প্রবাহ | সরল, সহজে বুঝতে পারা যায় | অ্যাসিনক্রোনাস কলব্যাক ব্যবহৃত হয় |
কোনটি ব্যবহার করবেন?
- Synchronous ফাইল অপারেশন ব্যবহার করা উপযুক্ত যখন আপনি ছোট, একক থ্রেডেড অ্যাপ্লিকেশন তৈরি করছেন এবং যেখানে কোডের প্রক্রিয়া সোজা এবং নির্ধারিত।
- Asynchronous ফাইল অপারেশন ব্যবহার করা উচিত যখন আপনার অ্যাপ্লিকেশনকে স্কেলেবেল এবং দ্রুত পারফরম্যান্সের প্রয়োজন রয়েছে, এবং আপনি একাধিক ফাইল বা I/O অপারেশন একসাথে পরিচালনা করতে চান।
সারাংশ
- Synchronous File Operations: কোড চলতে থাকে শুধুমাত্র ফাইল অপারেশন সম্পন্ন হওয়ার পর।
- Asynchronous File Operations: কোড চালানো চলতে থাকে এবং ফাইল অপারেশন শেষ হলে কলব্যাক ফাংশন ট্রিগার হয়।
Node.js এর অ্যাসিনক্রোনাস পদ্ধতি উচ্চ পারফরম্যান্স এবং স্কেলেবিলিটি প্রদান করে, বিশেষ করে যখন একাধিক I/O অপারেশন বা ফাইল সংক্রান্ত কাজ করা হয়।
Read more